#ifndef MATH_UTILS_H
#define MATH_UTILS_H

#include <math.h>
#include <wchar.h>  // 宽字符支持

#define PI 3.14159265358979323846

// 对超过 0-2PI 的角度转为 0-2PI
double rad2mrad(double v);

// 对超过 -PI 到 PI 的角度转为 -PI 到 PI
double rad2rrad(double v);

// 临界余数（a 与最近的整倍数 b 相差的距离）
double mod2(double a, double b);

// 球面转直角坐标
void llr2xyz(const double JW[3], double result[3]);

// 直角坐标转球面
void xyz2llr(const double xyz[3], double result[3]);

// 球面坐标旋转
void llrConv(const double JW[3], double E, double result[3]);

// 赤道坐标转为地平坐标
void CD2DP(const double z[3], double L, double fa, double gst, double result[3]);

// 求角度差
double j1_j2(double J1, double W1, double J2, double W2);

// 日心球面转地心球面
void h2g(const double z[3], const double a[3], double result[3]);

// 视差角（不是视差）
double shiChaJ(double gst, double L, double fa, double J, double W);

#endif // MATH_UTILS_H